package com.insleton.admin.employee.service;

import jakarta.persistence.criteria.Root;
import org.hibernate.query.criteria.HibernateCriteriaBuilder;
import org.hibernate.query.criteria.JpaPredicate;

import java.util.Map;

/**
 * JPA CriteriaQuery，如果用户需要复杂的查询条件，让用户自己组合查询条件，构建查询谓词。
 */
public interface CriteriaQueryCallback<X> {

    /**
     * 将查询参数，组合成自己需要的查询谓词
     *
     * @param params 查询参数
     * @return Jpa查询谓词
     */
    JpaPredicate map(HibernateCriteriaBuilder cb, Root<X> root, Map<String, Object> params);
}
